widget: Move opactiy == 0 check
authorBenjamin Otte <otte@redhat.com>
Wed, 27 Jun 2018 18:52:23 +0000 (20:52 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 27 Jun 2018 19:50:07 +0000 (21:50 +0200)
If we check it too early, we will not unset priv->draw_neeeded, which
will then cause queue_draw() calls to not have an effect later. And that
causes changes in opacity to not register.

Closes #1180

gtk/gtkwidget.c

index 2fea7f914351d1b20df2553bfc57005c7c97ed4c..581e27f8702735e15d53ab53ba274942e3a4d4f4 100644 (file)
@@ -13159,6 +13159,10 @@ gtk_widget_create_render_node (GtkWidget   *widget,
   GtkBorder margin, border, padding;
   GtkSnapshot *snapshot;
 
+  opacity = priv->alpha / 255.0;
+  if (opacity <= 0.0)
+    return NULL;
+
   snapshot = gtk_snapshot_new ();
 
   _gtk_widget_get_allocation (widget, &allocation);
@@ -13174,7 +13178,6 @@ gtk_widget_create_render_node (GtkWidget   *widget,
   get_box_margin (style, &margin);
   get_box_border (style, &border);
   get_box_padding (style, &padding);
-  opacity = priv->alpha / 255.0;
 
   if (opacity < 1.0)
     gtk_snapshot_push_opacity (snapshot, opacity);
@@ -13223,7 +13226,6 @@ gtk_widget_snapshot (GtkWidget   *widget,
                      GtkSnapshot *snapshot)
 {
   GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-  double opacity;
 
   if (!_gtk_widget_is_drawable (widget))
     return;
@@ -13234,10 +13236,6 @@ gtk_widget_snapshot (GtkWidget   *widget,
       return;
     }
 
-  opacity = priv->alpha / 255.0;
-  if (opacity <= 0.0)
-    return;
-
   if (priv->draw_needed)
     {
       GskRenderNode *render_node;